package com.baiduspring.service.user;

import com.baiduspring.dao.entity.User;
import com.baiduspring.vo.UserVO;

import java.util.Optional;

/**
 * 定义接口
 *
 * @author xiongyan
 */
public interface UserService {
    /**
     * 注册
     *
     * @param userVO 用户信息
     */
    void register(UserVO userVO);

    /**
     * 登录
     *
     * @param name     账号
     * @param password 密码
     * @return 返回用户信息
     */
    Optional<User> login(String name, String password);

    /**
     * 验证账号的唯一性。
     * 可以是：手机号码、用户名和邮箱
     *
     * @param name 账号
     * @return 返回user对象
     */
    Optional<User> uniqueness(String name);

    /**
     * 根据account查询用户信息
     *
     * @param account 账号
     * @return 返回用户信息
     */
    Optional<User> getByAccount(Long account);

    /**
     * 根据账号更新用户主页被浏览次数
     *
     * @param account 账号
     * @return 返回更新行数
     */
    int modifyHomepageViewsByAccount(Long account);

    /**
     * 根据手机号码修改密码
     *
     * @param mobile      手机号码
     * @param newPassword 新密码
     */
    void modifyPasswordByMobile(String mobile, String newPassword);

    /**
     * 保存用户头像接口
     *
     * @param id    用户主键
     * @param photo 头像URL
     */
    void saveUserPhoto(Long id, String photo);
}
